# -*- coding：utf-8 -*-
"""
@Time:2024-08-1818:53
@Auth:泛彼泊舟
@File:9、反射读取使用方法.py
@IDE:PyCharm
@模块功能：xxx
"""
"""
通过getattr（）内建函数读取对象所有的属性和方法，进行引用传递之后，调用
"""

class A:
    o = 888

    def __init__(self):
        self.i = 666

    def a(self):
        print("a方法被调用了")

    def b(self):
        print("b方法被调用了")

    def c(self):
        print("c方法被调用了")

    def d(self):
        print("d方法被调用了")

    @classmethod
    def e(cls):
        print("e方法被调用了")


def func():
    print("func被调用啦")


x = A()

# 可以把该对象的方法引用进行传递再调用
f = getattr(x, "a")
f()

o_2 = getattr(x, "o")
print(o_2)

i_2 = getattr(x, "i")
print(i_2)  # 888

i_2 = getattr(x, "e")
print(i_2)
# x.a()
# 函数和方法的引用都是可以进行传递
# func = x.a
# func() # func() = x.a()

# 通过遍历的方式获取所有属性和方法，然后进行调用
for i in ["a", "b", "c", "d", "e"]:
    f = getattr(x, i)
    f()

for i in ["i", "o"]:
    f = getattr(x, i)
    print(f)
